<?php
namespace app\admin\controller;

use Geetest\GeetestLib;
use think\Session;

class Index extends Base
{
    /**
     * 首页
     */
    public function index()
    {
        if(!Session::get('user'))
        {
            $this->error('您还未登录或登录已过期，请重新登录！','login/login',null,1);
        } else {
            return $this->fetch();
        }
    }

    /**
     * 首页欢迎页面
     */
    public function welcome()
    {
        $assign = array(
            'info' => array(
                '0'=>gethostbyname($_SERVER['SERVER_NAME']),
                '1'=>$_SERVER['SERVER_NAME'],
                '2'=>PHP_OS,
                '3'=>php_uname(),
                '4'=>$_SERVER["SERVER_SOFTWARE"],
                '5'=>PHP_VERSION,
                '6'=>php_sapi_name(),
                '7'=>$_SERVER['DOCUMENT_ROOT'],
                '8'=>THINK_VERSION.' [ <a href="http://thinkphp.cn" target="_blank">查看最新版本</a> ]',
                '9'=>$_SERVER["SERVER_PORT"],
                '10'=>ini_get('max_execution_time').'秒',
                '11'=>date("Y年n月j日 H:i:s"),
                '12'=>gmdate("Y年n月j日 H:i:s",time()+8*3600),
                '13'=>round((disk_free_space(".")/(1024*1024)),2).'M',
                '14'=>ini_get('upload_max_filesize'),
            )
        );
        $this->assign($assign);
        return $this->fetch();
    }

    /**
     * 图片上传没有预览
     */
    public function webUpload()
    {
        // 获取表单上传文件
        if($files = request()->file()){
            foreach($files as $file){
                // 移动到框架应用根目录/public/uploads/ 目录下
                $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
                if($info){
                    // 成功上传后 获取上传信息
                    // 输出 jpg
                    echo $info->getExtension();
                    // 输出 文件名
                    echo $info->getFilename();
                }else{
                    // 上传失败获取错误信息
                    echo $file->getError();
                }
            }
        }else{
            return $this->fetch();
        }
    }

    /**
     * 图片上传预览
     */
    public function webUploader()
    {
        // 获取表单上传文件
        if($files = request()->file()){
            foreach($files as $file){
                // 移动到框架应用根目录/public/uploads/ 目录下
                $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
                if($info){
                    // 成功上传后 获取上传信息
                    // 输出 jpg
                    echo $info->getExtension();
                    // 输出 文件名
                    echo $info->getFilename();
                }else{
                    // 上传失败获取错误信息
                    echo $file->getError();
                }
            }
        }else{
            return $this->fetch();
        }
    }

    /**
     * 畅言，需要在服务器端测试，并且畅言后台绑定域名
     */
    public function changyan()
    {
        return $this->fetch();
    }

    /**
     * 极验验证开始
     * 极验验证登录页面
     */
    public function geetest()
    {
        return $this->fetch();
    }

    // 极验验证输出验证码
    public function geetest_output_verify()
    {
        session_start();
        vendor('geetestsdk.lib.GeetestLib#class');
        $CAPTCHA_ID = config('CAPTCHA_ID');
        $PRIVATE_KEY = config('PRIVATE_KEY');
        $GtSdk = new GeetestLib($CAPTCHA_ID,$PRIVATE_KEY);

        $data = array(
            "user_id" => "test", # 网站用户id
            "client_type" => "web", #web:电脑上的浏览器；h5:手机上的浏览器，包括移动应用内完全内置的web_view；native：通过原生SDK植入APP应用的方式
            "ip_address" => "127.0.0.1" # 请在此处传输用户请求验证时所携带的IP
        );

        $status = $GtSdk->pre_process($data, 1);
        $_SESSION['gtserver'] = $status;
        $_SESSION['user_id'] = $data['user_id'];
        echo $GtSdk->get_response_str();
    }


    // 极验验证检测验证码
    function geetest_check_verify()
    {
        session_start();
        vendor('geetestsdk.lib.GeetestLib#class');
        $CAPTCHA_ID = config('CAPTCHA_ID');
        $PRIVATE_KEY = config('PRIVATE_KEY');
        $GtSdk = new GeetestLib($CAPTCHA_ID,$PRIVATE_KEY);

        $data = array(
            "user_id" => $_SESSION['user_id'], # 网站用户id
            "client_type" => "web", #web:电脑上的浏览器；h5:手机上的浏览器，包括移动应用内完全内置的web_view；native：通过原生SDK植入APP应用的方式
            "ip_address" => "127.0.0.1" # 请在此处传输用户请求验证时所携带的IP
        );

        if ($_SESSION['gtserver'] == 1) {   //服务器正常
            $result = $GtSdk->success_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'], $data);
            if ($result) {
                echo '{"status":"success"}';
            } else{
                echo '{"status":"fail"}';
            }
        }else{  //服务器宕机,走failback模式
            if ($GtSdk->fail_validate($_POST['geetest_challenge'],$_POST['geetest_validate'],$_POST['geetest_seccode'])) {
                echo '{"status":"success"}';
            }else{
                echo '{"status":"fail"}';
            }
        }
    }
    /**
     * 极验验证结束
     */


}
